home *** CD-ROM | disk | FTP | other *** search
/ SGI Enlighten DSM 3.1 / SGI EnlightenDSM 3.1.iso / SCO5X / ADMIN / bin / enl_delegate < prev    next >
Text File  |  1999-04-16  |  7KB  |  315 lines

  1. #!/bin/sh
  2. #
  3. # Copyright (c) 1990-1999 Enlighten Software Solutions, Inc.
  4. #
  5. # Script: enl_delegate
  6. # Usage : enl_delegate -q -[enable|disable]
  7. #
  8. #          -q      : run in quiet mode. User is not prompted for confirmation
  9. #                    and no output is displayed.
  10. #          -enable: Permissions on EnlightenDSM's directories and files
  11. #                     are modified so that any authorized user may access
  12. #                    and run the product. 
  13. #         -disable : Permissions on EnlightenDSM's directories and files
  14. #                    are modified so that only user root may access and run
  15. #                    the product.
  16. #
  17. # Exit code: 0 on success, 1 on failure
  18. #
  19.  
  20.  
  21. Usage () {
  22.     echo 
  23.     echo "enl_delegate -q -[enable|disable]"
  24.     echo 
  25.     echo "-?      : Display usage statement and exit."
  26.     echo "-q      : Run in quiet mode. User is not prompted for confirmation"
  27.     echo "          and no output is displayed."
  28.     echo "-enable : Permissions on EnlightenDSM's directories and files"
  29.     echo "          are modified so that any authorized user may access"
  30.     echo "          and run the product."
  31.     echo "-disable: Permissions on EnlightenDSM's directories and files"
  32.     echo "          are modified so that only user root may access and run"
  33.     echo "          the product."
  34.     echo
  35.     echo "Return code: 0 on success, 1 on failure"
  36.     echo
  37. }
  38.  
  39. change_dir_mode () {
  40.     msg="\nChanging the following directories to mode $curr_mode:"
  41.     print_msg
  42.  
  43.     for i in $curr_list
  44.     do
  45.         if [ -d "${prod_dir}/$i" ] ; then
  46.             chmod $curr_mode ${prod_dir}/$i
  47.             msg=${prod_dir}/$i
  48.             print_msg
  49.         fi
  50.     done
  51. }
  52.  
  53. change_dir_star_mode () {
  54.     msg="\nChanging contents of the following directories to mode $curr_mode:"
  55.     print_msg
  56.  
  57.     for i in $curr_list
  58.     do
  59.         if [ -d "${prod_dir}/$i" ] ; then
  60.             find ${prod_dir}/$i -exec chmod $curr_mode {} \;
  61.             msg=${prod_dir}/$i
  62.             print_msg
  63.         fi
  64.     done
  65. }
  66.  
  67. change_file_mode () {
  68.     msg="\nChanging the following files to mode $curr_mode:"
  69.     print_msg
  70.  
  71.     for i in $curr_list
  72.     do
  73.         if [ -f "${prod_dir}/$i" ] ; then
  74.             chmod $curr_mode ${prod_dir}/$i
  75.             msg=${prod_dir}/$i
  76.             print_msg
  77.         fi
  78.     done
  79. }
  80.  
  81. change_file_bin_mode () {
  82.     msg="\nChanging the following files to mode $curr_mode:"
  83.     print_msg
  84.  
  85.     for i in $curr_list
  86.     do
  87.         if [ -f "${prod_dir}/bin/$i" ] ; then
  88.             chmod $curr_mode ${prod_dir}/bin/$i
  89.             msg=${prod_dir}/bin/$i
  90.             print_msg
  91.         fi
  92.     done
  93. }
  94.  
  95.  
  96. print_msg () {
  97.     if [ "$quiet" -eq 0 ] ; then
  98.         echo $msg
  99.     fi
  100.  
  101.     echo $msg >> $log
  102. }
  103.  
  104. ############## Start of script #####################
  105.  
  106. app_name=`basename $0`
  107. time=`date`
  108. quiet=0
  109. enable=0
  110. is_set=0
  111.  
  112. # Verify user is root
  113.  
  114. user_id=`id | tr "(" "=" | cut "-d=" -f2`
  115. if [ "$user_id" -ne 0 ] ; then
  116.     echo "$app_name must be run by user root."
  117.     echo "Exiting..."
  118.     exit 1
  119. fi
  120.  
  121. # Get command line arguments
  122.  
  123. if [ "$#" -lt 1 ] ; then
  124.     Usage
  125.     exit 1
  126. fi
  127.  
  128. while [ "$#" -ne 0 ] ; do
  129.     case "$1" in
  130.         -q ) 
  131.             quiet=1
  132.             ;;
  133.         -enable ) 
  134.             enable=1
  135.             is_set=1
  136.             action="Enabling"
  137.             ;;
  138.         -disable )
  139.             enable=0
  140.             is_set=1
  141.             action="Disabling"
  142.             ;;
  143.         -? )
  144.             Usage
  145.             exit 0
  146.             ;;
  147.         * )
  148.             echo "Unknown option: $1"
  149.             Usage    
  150.             exit 1
  151.             ;;
  152.     esac
  153.     shift
  154. done
  155.  
  156. if [ "$is_set" -eq 0 ] ; then
  157.     echo "You must specify -enable or -disable."
  158.     Usage
  159.     exit 1
  160. fi
  161.  
  162. # Get install directory
  163.  
  164. prod_dir=`egrep "^enlighten=" /etc/enlighten | cut "-d=" -f2-`
  165. if [ -z "$prod_dir" -o ! -d "$prod_dir" ] ; then
  166.     echo "Unable to find EnlightenDSM installation directory."
  167.     echo "Check the settings in /etc/enlighten file for errors."
  168.     exit 1
  169. fi
  170.  
  171. log=${prod_dir}/logs/${app_name}.log
  172.  
  173. # Double check with user
  174.  
  175. if [ "$quiet" -eq 0 ] ; then
  176.     echo "$action delegation of authority for EnlightenDSM."
  177.     echo 'Do you wish to continue? (y/n): '
  178.     read ans 
  179.  
  180.     case $ans in  
  181.         y* | Y* ) 
  182.             ;;
  183.         * )
  184.             echo "Exiting..."
  185.             exit 0
  186.             ;;
  187.     esac
  188. fi
  189.  
  190. # Define directories and files to be modified
  191.  
  192. dirs_750=". bin config config/formlet msg msg/C icons icons/C help help/C config/rfd config/backup maps" 
  193.  
  194. dirs_770=".data tmp logs config/defaultpool config/backup/logfiles config/rfd/logfiles secure work"
  195.  
  196. files_bin_710="xenln sm p_snapdiff hexed"
  197.  
  198. dirs_star_440="maps icons/C msg/C help/C"
  199. files_440="config/params config/cmds config/defnetgrp"
  200.  
  201. dirs_star_660="config/formlet config/backup/logfiles config/rfd/logfiles"
  202. files_640="config/winn.out config/names config/remedies config/suggestions"
  203.  
  204. dirs_700="$dirs_750 $dirs_770"
  205. dirs_star_400=$dirs_star_440
  206. dirs_star_600=$dirs_star_660
  207. files_600="$files_640"
  208. files_400="$files_440"
  209. files_bin_700=$files_bin_710
  210.  
  211.  
  212. if [ "$enable" -eq 1 ] ; then
  213.  
  214.     echo "" >> $log
  215.     echo "" >> $log
  216.     echo "#####################################################" >> $log
  217.     msg="$app_name: Enabling delegation of authority on $time."
  218.     print_msg
  219.  
  220.     # Change the directories
  221.  
  222.     curr_list=$dirs_star_440
  223.     curr_mode="440"
  224.     change_dir_star_mode
  225.  
  226.     curr_list=$dirs_star_660
  227.     curr_mode="660"
  228.     change_dir_star_mode
  229.  
  230.     curr_list=$dirs_750
  231.     curr_mode="750"
  232.     change_dir_mode
  233.  
  234.     curr_list=$dirs_770
  235.     curr_mode="770"
  236.     change_dir_mode
  237.  
  238.     # Change the files
  239.  
  240.     curr_list=$files_bin_710
  241.     curr_mode="710"
  242.     change_file_bin_mode    
  243.  
  244.     curr_list=$files_640
  245.     curr_mode="640"
  246.     change_file_mode    
  247.  
  248.     curr_list=$files_440
  249.     curr_mode="440"
  250.     change_file_mode    
  251.  
  252.  
  253.     if [ "$quiet" -eq 0 ] ; then
  254.         echo ""
  255.         echo "********************************************"
  256.         echo "Finished enabling delegation of authority."
  257.         echo "To control user access to EnlightenDSM, use the"
  258.         echo "User Authorization window available from the Configure Menu"
  259.         echo "of the EnlightenDSM GUI."
  260.         echo "Authorized users must also be placed in group 'enldsm'"
  261.         echo "in order to have access to the EnlightenDSM GUI."
  262.         echo ""
  263.         echo "A log of actions performed by this script can be found in"
  264.         echo "$log."
  265.     fi
  266.  
  267. else
  268.     
  269.     # Enable root only access
  270.  
  271.     echo "" >> $log
  272.     echo "" >> $log
  273.     echo "#####################################################" >> $log
  274.     msg="$app_name: Disabling delegation of authority on $time."
  275.     print_msg
  276.  
  277.     curr_list=$dirs_700
  278.     curr_mode="700"
  279.     change_dir_mode
  280.     
  281.     curr_list=$dirs_star_400
  282.     curr_mode="400"
  283.     change_dir_star_mode
  284.     
  285.     curr_list=$dirs_star_700
  286.     curr_mode="700"
  287.     change_dir_star_mode
  288.     
  289.     curr_list=$dirs_star_600
  290.     curr_mode="600"
  291.     change_dir_star_mode
  292.     
  293.     curr_list=$files_600
  294.     curr_mode="600"
  295.     change_file_mode    
  296.  
  297.     curr_list=$files_400
  298.     curr_mode="400"
  299.     change_file_mode    
  300.  
  301.     curr_list=$files_bin_700
  302.     curr_mode="700"
  303.     change_file_bin_mode    
  304.  
  305.     if [ "$quiet" -eq 0 ] ; then
  306.         echo ""
  307.         echo "********************************************"
  308.         echo "Finished disabling delegation of authority."
  309.         echo ""
  310.         echo "A log of actions performed by this script can be found in"
  311.         echo "$log."
  312.     fi
  313. fi
  314.  
  315.